package com.bfly.mall.wechat.minipro.dto;

import java.io.Serializable;
import java.util.List;

/**
 * 微信查询订单返回的消息实体类
 *
 * @author 长沙商脉科技有限公司
 * @2015年4月28日下午4:03:22
 */
public class WeChatOrderQueryResponse implements Serializable {

    /**
     * @author 长沙商脉科技有限公司
     * @2015年4月28日下午4:04:20
     */
    private static final long serialVersionUID = -4931086863512131537L;

    /**
     * 公众号ID:直连商户申请的公众号或移动应用appid
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:28
     */
    private String appid;

    /**
     * 直连商户号	:直连商户的商户号，由微信支付生成并下发
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:29
     */
    private String mchid;

    /**
     * 商户订单号:商户系统内部订单号，只能是数字、大小写字母_-*且在同一个商户号下唯一。
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:30
     */
    private String out_trade_no;

    /**
     * 微信支付订单号:微信支付系统生成的订单号。
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:30
     */
    private String transaction_id;

    /**
     * 交易类型:枚举值：
     * JSAPI：公众号支付
     * NATIVE：扫码支付
     * APP：APP支付
     * MICROPAY：付款码支付
     * MWEB：H5支付
     * FACEPAY：刷脸支付
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:31
     */
    private String trade_type;

    /**
     * 交易状态:枚举值：
     * SUCCESS：支付成功
     * REFUND：转入退款
     * NOTPAY：未支付
     * CLOSED：已关闭
     * REVOKED：已撤销（付款码支付）
     * USERPAYING：用户支付中（付款码支付）
     * PAYERROR：支付失败(其他原因，如银行返回失败)
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:32
     */
    private String trade_state;

    /**
     * 交易状态描述
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:32
     */
    private String trade_state_desc;

    /**
     * 付款银行:银行类型，采用字符串类型的银行标识。
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:33
     */
    private String bank_type;

    /**
     * 附加数据:在查询API和支付通知中原样返回，可作为自定义参数使用
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:33
     */
    private String attach;

    /**
     * 支付完成时间:遵循rfc3339标准格式，格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE，YYYY-MM-DD表示年月日，T出现在字符串中，表示time元素的开头，HH:mm:ss表示时分秒，TIMEZONE表示时区（+08:00表示东八区时间，领先UTC 8小时，即北京时间）。例如：2015-05-20T13:29:35+08:00表示，北京时间2015年5月20日 13点29分35秒。
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:34
     */
    private String success_time;

    /**
     * 支付者
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:36
     */
    private Payer payer;

    /**
     * 订单金额
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:37
     */
    private Amount amount;

    /**
     * 场景信息:支付场景描述
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:39
     */
    private SceneInfo scene_info;

    /**
     * 优惠功能:优惠功能，享受优惠时返回该字段
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/2 11:40
     */
    private PromotionDetail promotion_detail;

    public String getAppid() {
        return appid;
    }

    public void setAppid(String appid) {
        this.appid = appid;
    }

    public String getMchid() {
        return mchid;
    }

    public void setMchid(String mchid) {
        this.mchid = mchid;
    }

    public String getOut_trade_no() {
        return out_trade_no;
    }

    public void setOut_trade_no(String out_trade_no) {
        this.out_trade_no = out_trade_no;
    }

    public String getTransaction_id() {
        return transaction_id;
    }

    public void setTransaction_id(String transaction_id) {
        this.transaction_id = transaction_id;
    }

    public String getTrade_type() {
        return trade_type;
    }

    public void setTrade_type(String trade_type) {
        this.trade_type = trade_type;
    }

    public String getTrade_state() {
        return trade_state;
    }

    public void setTrade_state(String trade_state) {
        this.trade_state = trade_state;
    }

    public String getTrade_state_desc() {
        return trade_state_desc;
    }

    public void setTrade_state_desc(String trade_state_desc) {
        this.trade_state_desc = trade_state_desc;
    }

    public String getBank_type() {
        return bank_type;
    }

    public void setBank_type(String bank_type) {
        this.bank_type = bank_type;
    }

    public String getAttach() {
        return attach;
    }

    public void setAttach(String attach) {
        this.attach = attach;
    }

    public String getSuccess_time() {
        return success_time;
    }

    public void setSuccess_time(String success_time) {
        this.success_time = success_time;
    }

    public Payer getPayer() {
        return payer;
    }

    public void setPayer(Payer payer) {
        this.payer = payer;
    }

    public Amount getAmount() {
        return amount;
    }

    public void setAmount(Amount amount) {
        this.amount = amount;
    }

    public SceneInfo getScene_info() {
        return scene_info;
    }

    public void setScene_info(SceneInfo scene_info) {
        this.scene_info = scene_info;
    }

    public PromotionDetail getPromotion_detail() {
        return promotion_detail;
    }

    public void setPromotion_detail(PromotionDetail promotion_detail) {
        this.promotion_detail = promotion_detail;
    }

    public class PromotionDetail {
        /**
         * 券ID
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:40
         */
        private String coupon_id;
        /**
         * 优惠名称
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:41
         */
        private String name;
        /**
         * 优惠范围 GLOBAL：全场代金券 SINGLE：单品优惠
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:41
         */
        private String scope;

        /**
         * 优惠类型:CASH：充值 NOCASH：预充值
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:42
         */
        private String type;

        /**
         * 优惠券面额
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:42
         */
        private int amount;

        /**
         * 活动ID
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:42
         */
        private String stock_id;

        /**
         * 微信出资:单位为分
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:43
         */
        private int wechatpay_contribute;

        /**
         * 商户出资:单位为分
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:43
         */
        private int merchant_contribute;

        /**
         * 其他出资:单位为分
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:43
         */
        private int other_contribute;

        /**
         * 优惠币种
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:44
         */
        private String currency;

        /**
         * 单品列表
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:44
         */
        private List<GoodsDetail> goods_detail;

        public String getCoupon_id() {
            return coupon_id;
        }

        public void setCoupon_id(String coupon_id) {
            this.coupon_id = coupon_id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getScope() {
            return scope;
        }

        public void setScope(String scope) {
            this.scope = scope;
        }

        public String getType() {
            return type;
        }

        public void setType(String type) {
            this.type = type;
        }

        public int getAmount() {
            return amount;
        }

        public void setAmount(int amount) {
            this.amount = amount;
        }

        public String getStock_id() {
            return stock_id;
        }

        public void setStock_id(String stock_id) {
            this.stock_id = stock_id;
        }

        public int getWechatpay_contribute() {
            return wechatpay_contribute;
        }

        public void setWechatpay_contribute(int wechatpay_contribute) {
            this.wechatpay_contribute = wechatpay_contribute;
        }

        public int getMerchant_contribute() {
            return merchant_contribute;
        }

        public void setMerchant_contribute(int merchant_contribute) {
            this.merchant_contribute = merchant_contribute;
        }

        public int getOther_contribute() {
            return other_contribute;
        }

        public void setOther_contribute(int other_contribute) {
            this.other_contribute = other_contribute;
        }

        public String getCurrency() {
            return currency;
        }

        public void setCurrency(String currency) {
            this.currency = currency;
        }

        public List<GoodsDetail> getGoods_detail() {
            return goods_detail;
        }

        public void setGoods_detail(List<GoodsDetail> goods_detail) {
            this.goods_detail = goods_detail;
        }

        public class GoodsDetail {
            /**
             * 商品编码
             *
             * @author 长沙商脉科技有限公司
             * @date 2020/12/2 11:45
             */
            private String goods_id;
            /**
             * 商品数量
             *
             * @author 长沙商脉科技有限公司
             * @date 2020/12/2 11:45
             */
            private int quantity;
            /**
             * 商品单价:单位为分
             *
             * @author 长沙商脉科技有限公司
             * @date 2020/12/2 11:45
             */
            private int unit_price;
            /**
             * 商品优惠金额
             *
             * @author 长沙商脉科技有限公司
             * @date 2020/12/2 11:45
             */
            private int discount_amount;
            /**
             * 商品备注
             *
             * @author 长沙商脉科技有限公司
             * @date 2020/12/2 11:46
             */
            private String goods_remark;

            public String getGoods_id() {
                return goods_id;
            }

            public void setGoods_id(String goods_id) {
                this.goods_id = goods_id;
            }

            public int getQuantity() {
                return quantity;
            }

            public void setQuantity(int quantity) {
                this.quantity = quantity;
            }

            public int getUnit_price() {
                return unit_price;
            }

            public void setUnit_price(int unit_price) {
                this.unit_price = unit_price;
            }

            public int getDiscount_amount() {
                return discount_amount;
            }

            public void setDiscount_amount(int discount_amount) {
                this.discount_amount = discount_amount;
            }

            public String getGoods_remark() {
                return goods_remark;
            }

            public void setGoods_remark(String goods_remark) {
                this.goods_remark = goods_remark;
            }
        }
    }

    public class SceneInfo {
        /**
         * 商户端设备号
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:39
         */
        private String device_id;

        public String getDevice_id() {
            return device_id;
        }

        public void setDevice_id(String device_id) {
            this.device_id = device_id;
        }
    }

    public class Amount {
        /**
         * 总金额:单位为分
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:37
         */
        private int total;
        /**
         * 用户支付金额:单位为分
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:38
         */
        private int payer_total;
        /**
         * 货币类型
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:38
         */
        private String currency;

        /**
         * 用户支付币种
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:38
         */
        private String payer_currency;

        public int getTotal() {
            return total;
        }

        public void setTotal(int total) {
            this.total = total;
        }

        public int getPayer_total() {
            return payer_total;
        }

        public void setPayer_total(int payer_total) {
            this.payer_total = payer_total;
        }

        public String getCurrency() {
            return currency;
        }

        public void setCurrency(String currency) {
            this.currency = currency;
        }

        public String getPayer_currency() {
            return payer_currency;
        }

        public void setPayer_currency(String payer_currency) {
            this.payer_currency = payer_currency;
        }
    }

    public class Payer {
        /**
         * 用户标识:用户在直连商户appid下的唯一标识。
         *
         * @author 长沙商脉科技有限公司
         * @date 2020/12/2 11:36
         */
        private String openid;

        public String getOpenid() {
            return openid;
        }

        public void setOpenid(String openid) {
            this.openid = openid;
        }
    }
}
